#include "../includes/pagoracer.h"

GLfloat modulo(GLfloat Val) {
  if (Val < 0.0) {
    return -Val;
  };
  return Val;
};

void AcresceMovePista(GLfloat AAcrescer) {
  MovePista += AAcrescer;
  if (MovePista > VEL_MAX) {
    MovePista = VEL_MAX;
  } else if (MovePista < VEL_MIN) {
    MovePista = VEL_MIN;
  };
  return (void) 0;
};

void AcresceAngulo(GLfloat AAcrescer) {
  AnguloAtual += AAcrescer;
  if (AnguloAtual > ANG_MAX) {
    AnguloAtual = ANG_MAX;
  } else if (AnguloAtual < ANG_MIN) {
    AnguloAtual = ANG_MIN;
  };
  return (void) 0;
};

void TemporizaPagoracer(int val) {
  int i;

  if (teclas[TECLA_CIMA]) {
    AcresceMovePista(ACELERACAO);
  } else {
    AcresceMovePista(DESACELERACAO);
  };
  
  if (teclas[TECLA_BAIXO]){
    AcresceMovePista(FREIO);
  };

  if (teclas[TECLA_ESQUERDA]) {
    AcresceAngulo(SOMA_ANGULO);
  };
  if (teclas[TECLA_DIREITA]) {
    AcresceAngulo(SUBTRAI_ANGULO);
  };

  seno = sin((modulo(AnguloAtual)*PI)/180.0);
  cosseno = cos((modulo(AnguloAtual)*PI)/180.0);

  if (AnguloAtual < 0.0) {
    MovCarro += seno*MovePista;
  } else {
    MovCarro -= seno*MovePista;
  };

  ProfundidadePista -= cosseno*MovePista;
  //  printf("%f,%f\n",MovCarro,ProfundidadePista);
  RedefinePista();
//  SolAngulo -= 1.0;
//  if (SolAngulo < 0) {
//    SolAngulo += 360;
//  };
  glutPostRedisplay();
};
